﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using BUS;
using DTO;
using System.Globalization;
using System.Threading;


namespace Presentation
{
    public partial class Frm_Main : Form
    {
        public Frm_Main()
        {
            InitializeComponent();
        }

        #region GLOBAL VARIABLE

        #endregion

        #region PROPERTIES

        #endregion

        #region FUNCTION

        private void Form1_Load(object sender, EventArgs e)
        {
            // Tinh trang ban dau cua cac tab
            K_rpnSoTietKiem.Enabled = false;
            K_rpnPhieuGuiTien.Enabled = false;
            K_rpnPhieuRutTien.Enabled = false;
            K_rpnTraCuu.Enabled = false;
            K_rpnBaoCao.Enabled = false;
            K_rpnThayDoiQuiDinh.Enabled = false;
          
            P_btnSoTietKiem.Enabled = false;
            P_btnPhieuGuiTien.Enabled = false;
            P_btnPhieuRutTien.Enabled = false;
            P_btnTraCuu.Enabled = false;
            P_btnBaoCao.Enabled = false;
            P_btnThayDoiQuiDinh.Enabled = false;
            MessageBoxEx.EnableGlass = false;
            MessageBoxEx.MessageBoxTextColor = Color.White;
            // Load ma so tiet kiem
            KT_SOTIETKIEM_BUS stk = new KT_SOTIETKIEM_BUS();
            int maSo_K = stk.LayMaSoTietKiem();
            maSo_K++;
            K_txtMaSo_Info.Text = maSo_K.ToString();


            T_LayDanhSachLoaiTietKiem();
            T_LayDanhSachThang();
            T_ChuanBi();
            A_LoadGuiRut_CapNhatLai();

            // Load DS loai tiet kiem tab Thong tin so tiet kiem
            DS_LoaiTietKiem(stk, K_cbLoaiTietKiem_Info);

            // Load DS loai tiet kiem tab Thong tin tra cuu
            DS_LoaiTietKiem(stk, K_cbLoaiTietKiem_Sear);

            // Load ngay mo so (ngay hien hanh)
            K_txtNgayMoSo_Info.Text = DateTime.Today.Date.ToShortDateString();

            // Tinh trang ban dau cua cac control tab Thong tin tra cuu
            K_txtHoTenKH_Sear.Enabled = false;
            K_cbLoaiTietKiem_Sear.Enabled = false;
            K_cbTinhTrangSo_Sear.Enabled = false;
            K_dtiDenNgay_Sear.Enabled = false;
            K_dtiTuNgay_Sear.Enabled = false;
            K_cbTinhTrangSo_Sear.SelectedIndex = 0;
            P_LoadDanhSachLoaiTietKiem();
            P_LoadQuiDinh();
            P_expnThongTinTaiKhoan.Expanded = false;
            P_expnThongTinTaiKhoan.Enabled = false;
            P_expnDanhMuc.Expanded = false;
            P_expnDanhMuc.Enabled = false;
            //A_rbtHuongDan.Enabled = false;






        }



        //-------------------------- Mot ---------------------------//

        private void A_LoadGuiRut_CapNhatLai()
        {
            A_txtNgayGui.Text = DateTime.Now.ToString("dd/MM/yyyy");
            A_txtNgayRut.Text = DateTime.Now.ToString("dd/MM/yyyy");
            A_lblNgayHienTaiG.Text = DateTime.Now.ToString("dd/MM/yyyy");
            A_lblNgayHienTaiR.Text = DateTime.Now.ToString("dd/MM/yyyy");
            A_txtTraCuuHoTenG.ReadOnly = true;
            A_txtTraCuuHoTenR.ReadOnly = true;

            int thanghientai = DateTime.Now.Month;
            int namhientai = DateTime.Now.Year;
            int songaytrongthang = DateTime.DaysInMonth(namhientai, thanghientai);
            //Nếu ngày hiện tại là ngày cuối tháng thì cập nhật lãi cho các sổ
            if (DateTime.Now.Day == songaytrongthang)
            {
                //Lấy mã loại tiết kiệm của loại tiết kiệm không kỳ hạn
                A_PHIEUGUI_BUS pg_bus = new A_PHIEUGUI_BUS();
                DataTable dt = pg_bus.LayBangLoaiTietKiem(0);
                if (dt.Rows.Count > 0)
                {
                    int maloaitietkiem = int.Parse(dt.Rows[0]["MLTK"].ToString());
                    A_CapNhatLaiHangThang(thanghientai, namhientai, maloaitietkiem);
                }
            }
        }
        private void A_rbtHuongDan_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("..\\..\\..\\Help\\Help.chm");
        }

        #region Hàm xử lý tự động cập nhật lãi định kỳ hàng tháng cho loại tiết kiệm không kỳ hạn
        private void A_CapNhatLaiHangThang(int thang, int nam, int maloaitietkiem)
        {
            A_PHIEUGUI_BUS pg = new A_PHIEUGUI_BUS();

            //Lấy bảng cập nhật lãi để biết ngày cập nhật lãi gần nhất có phải là ngày của tháng hiện tại không
            //Nếu đúng thì không cập nhật, ngược lại thì cập nhật
            DataTable dt_capnhatlai = pg.LayBangCapNhatTienLai();

            int macapnhat = int.Parse(dt_capnhatlai.Rows[0]["MCNL"].ToString());
            DateTime ngayhientai = DateTime.Now;
            DateTime ngaycapnhatgannhat = DateTime.Parse(dt_capnhatlai.Rows[0]["NgayCapNhatGanNhat"].ToString());

            //Tháng của ngày cập nhật gần nhất không phải là tháng hiện tại
            if (ngaycapnhatgannhat.Month != thang)
            {
                //Lấy bảng dt_sotietkiem: bảng sổ tiết kiệm, dt_phieuguitrongthang: bảng tính tổng tiền gửi của từng sổ trong vòng 1 tháng
                //dt_duoccapnhat=dt_sotietkiem: bảng này dùng để cập nhật lãi suất sau đó update bảng xuống csdl
                DataTable dt_sotietkiem = pg.LayBangSoTietKiem();
                DataTable dt_duoccapnhat = dt_sotietkiem;
                DataTable dt_phieuguitrongthang = pg.LayTongTienGui(thang, nam);

                //Gán khóa chính cho 2 bảng để thực hiện merge lại thành 1 bảng
                dt_sotietkiem.PrimaryKey = new DataColumn[] { dt_sotietkiem.Columns["MS"] };
                dt_phieuguitrongthang.PrimaryKey = new DataColumn[] { dt_phieuguitrongthang.Columns["MS"] };
                dt_sotietkiem.Merge(dt_phieuguitrongthang);

                for (int i = 0; i < dt_sotietkiem.Rows.Count; i++)
                {
                    int maltk = int.Parse(dt_sotietkiem.Rows[i]["MLTK"].ToString());
                    double sotienhienco = double.Parse(dt_sotietkiem.Rows[i]["SoTienHienCo"].ToString());
                    double laisuat = double.Parse(dt_sotietkiem.Rows[i]["LaiSuat"].ToString());
                    DateTime ngaymoso = DateTime.Parse(dt_sotietkiem.Rows[i]["NgayMoSo"].ToString());
                    DateTime ngaytam = ngaymoso.AddMonths(1);// 1 tháng sau kể từ ngày mở sổ
                    TimeSpan ts = ngayhientai - ngaytam;
                    int songaydu = ts.Days; // khoảng cách từ ngày mở sổ + 1 tháng đến ngày hiện tại

                    //Nếu là sổ không kỳ hạn và mở sổ ít nhất 1 tháng (sổ mở 1 tháng sau mới được tính lãi)
                    if (maltk == maloaitietkiem && ngaytam < ngayhientai)
                    {
                        //Lấy tổng tiền gửi trong 1 tháng của sổ thứ i
                        // nếu giá trị tổng gửi là null (tháng đó không thực hiện gửi tiền) thì gán tổng tiền gửi =0

                        double tong_gui;
                        if (DBNull.Value.Equals(dt_sotietkiem.Rows[i]["TongGui"]))
                            tong_gui = 0;
                        else
                            tong_gui = double.Parse(dt_sotietkiem.Rows[i]["TongGui"].ToString());

                        // Nếu số tiền hiện có trong sổ < tổng gửi (tức là đã rút tiền lố qua tổng gửi) thì không tính lãi
                        //ngược lại tính lãi: số tiền được tính lãi=số tiền hiện có-tổng gửi
                        // số tiền hiện có=số tiền hiện có+số tiền được tính lãi * lãi suất

                        //Nếu gửi tiền hơn 1 tháng nhưng chưa được 2 tháng thì lãi suất được tính nhân vào số ngày dư ra

                        if (sotienhienco > tong_gui)
                        {
                            double tienduoctinhlai = sotienhienco - tong_gui;

                            if (songaydu >= DateTime.DaysInMonth(nam, thang))
                                dt_duoccapnhat.Rows[i]["SoTienHienCo"] = sotienhienco + Math.Round(tienduoctinhlai * laisuat, 0);
                            else
                                dt_duoccapnhat.Rows[i]["SoTienHienCo"] = sotienhienco + Math.Round(tienduoctinhlai * (laisuat / DateTime.DaysInMonth(nam, thang)), 0);
                        }
                    }

                }

                //Cập nhật bảng sổ tiết kiệm và cập nhật lại ngày cập nhật gần nhất của bảng CAPNHATLAI
                pg.CapNhatBangSoTietKiem(dt_duoccapnhat);
                pg.CapNhatBangCAPNHATLAI(ngayhientai, macapnhat);

            }
        }
        #endregion

        #region Phiếu gửi tiền

        #region Các hàm xử lý

        private string A_KiemTraPhieuGuiHopLe()
        {
            string chuoiloi = "";
            if (A_txtMaSoG.Text.Trim() == "" || A_txtMaSoG.ReadOnly == false)
                chuoiloi += "Bạn phải nhập mã sổ và kiểm tra mã sổ có hợp lệ không. \n";
            if (A_txtSoTienGui.Text.Trim() == "")
                chuoiloi += "Bạn phải nhập số tiền gửi.";

            return chuoiloi;
        }

        private void A_ResetThongTinSoGui()
        {
            A_PHIEUGUI_BUS pg = new A_PHIEUGUI_BUS();
            DataTable dt = pg.TraCuuPhieuGuiTheoMaSo(-1, DateTime.Now);
            A_dtgvPhieuGui.DataSource = dt;

            A_btnThemPhieuGui.Enabled = false;
            A_btnCapNhatPhieuGui.Enabled = false;
            A_btnXoaPhieuGui.Enabled = false;
            A_txtMaSoG.ReadOnly = false;


            A_txtLoaiTietKiemG.Text = "";
            A_txtHoTenG.Text = "";
            A_sbtnGioiTinhG.Value = false;
            A_txtCMNDG.Text = "";
            A_txtDienThoaiG.Text = "";
            A_txtDiaChiG.Text = "";
            A_txtTinhTrangG.Text = "";
            A_txtSoTienHienCoG.Text = "";
        }

        private void A_HienThiThongTinSoGui(DataTable dt)
        {
            A_txtMaSoG.Text = dt.Rows[0]["MS"].ToString();
            A_txtHoTenG.Text = dt.Rows[0]["TenKhachHang"].ToString();
            int gt = int.Parse(dt.Rows[0]["GioiTinh"].ToString());
            if (gt == 1)
                A_sbtnGioiTinhG.Value = false;
            else
                A_sbtnGioiTinhG.Value = true;
            A_txtCMNDG.Text = dt.Rows[0]["CMND"].ToString();
            A_txtDienThoaiG.Text = dt.Rows[0]["DienThoai"].ToString();
            A_txtDiaChiG.Text = dt.Rows[0]["DiaChi"].ToString();
            int tt = int.Parse(dt.Rows[0]["TinhTrang"].ToString());
            if (tt == 1)
                A_txtTinhTrangG.Text = "Mở";
            else
            {
                A_txtTinhTrangG.Text = "Đóng";
                A_btnCapNhatPhieuGui.Enabled = false;
                A_btnThemPhieuGui.Enabled = false;
                A_btnXoaPhieuGui.Enabled = false;
            }
            A_txtSoTienHienCoG.Text = dt.Rows[0]["SoTienHienCo"].ToString();
        }

        private void A_HienThiDongDauTienCuaDTGVGuiTien(DataTable dt)
        {
            int maso = int.Parse(dt.Rows[0]["MS"].ToString());
            double sotiengui = double.Parse(dt.Rows[0]["SoTienGui"].ToString());

            A_PHIEUGUI_BUS pg = new A_PHIEUGUI_BUS();
            DataTable dt_thongtinso = pg.LayThongTinSo(maso);
            A_HienThiThongTinSoGui(dt_thongtinso);

            A_txtSoTienGui.Text = sotiengui.ToString();

            A_txtMaSoG.ReadOnly = true;
            A_txtLoaiTietKiemG.Text = "Không kỳ hạn";
            A_btnThemPhieuGui.Enabled = true;
            A_btnXoaPhieuGui.Enabled = true;
            A_btnCapNhatPhieuGui.Enabled = true;
        }
        #endregion

        #region Các hàm sự kiện

        #region Key_Press không cho người dùng nhập chữ vào các textbox mã số, số tiền (chỉ được nhập số và nhấn backspace)

        private void A_txtMaSoG_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsNumber(e.KeyChar))
                e.Handled = true;
            else
                e.Handled = false;
            if (e.KeyChar == (int)Keys.Back)
                e.Handled = false;

        }

        private void A_txtSoTienGui_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsNumber(e.KeyChar))
                e.Handled = true;
            else
                e.Handled = false;
            if (e.KeyChar == (int)Keys.Back)
                e.Handled = false;
        }

        private void A_txtTraCuuMaSoG_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsNumber(e.KeyChar))
                e.Handled = true;
            else
                e.Handled = false;
            if (e.KeyChar == (int)Keys.Back)
                e.Handled = false;

        }
        #endregion

        #region Sự kiện checkedChange của radiobutton
        private void A_rdbMaSoG_CheckedChanged(object sender, EventArgs e)
        {
            if (A_rdbMaSoG.Checked)
            {
                A_txtTraCuuMaSoG.ReadOnly = false;
                A_txtTraCuuHoTenG.Text = "";
                A_txtTraCuuHoTenG.ReadOnly = true;
            }
            else
            {
                A_txtTraCuuMaSoG.Text = "";
                A_txtTraCuuMaSoG.ReadOnly = true;
                A_txtTraCuuHoTenG.ReadOnly = false;
            }
        }

        private void A_rdbHoTenG_CheckedChanged(object sender, EventArgs e)
        {
            if (A_rdbHoTenG.Checked)
            {
                A_txtTraCuuMaSoG.Text = "";
                A_txtTraCuuMaSoG.ReadOnly = true;
                A_txtTraCuuHoTenG.ReadOnly = false;
            }
            else
            {
                A_txtTraCuuMaSoG.ReadOnly = false;
                A_txtTraCuuHoTenG.Text = "";
                A_txtTraCuuHoTenG.ReadOnly = true;
            }
        }

        #endregion

        #region Sự kiện click button kiểm tra sổ, tra cứu, datagridview phiếu gửi
        private void A_btnKiemTraSoG_Click(object sender, EventArgs e)
        {
            A_ResetThongTinSoGui();
            if (A_txtMaSoG.Text.Trim() == "")
            {
                MessageBoxEx.EnableGlass = false;
                MessageBoxEx.MessageBoxTextColor = Color.White;
                MessageBoxEx.Show("Bạn phải nhập mã sổ cần kiểm tra", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                A_PHIEUGUI_BUS pg = new A_PHIEUGUI_BUS();
                int maso = int.Parse(A_txtMaSoG.Text);
                DataTable dt = pg.LayThongTinSo(maso);

                if (dt.Rows.Count == 0)
                {
                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Không có sổ này", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    int tenloaitietkiem = int.Parse(dt.Rows[0]["TenLoaiTietKiem"].ToString());
                    if (tenloaitietkiem == 0)
                    {
                        A_txtLoaiTietKiemG.Text = "Không kỳ hạn";
                        A_HienThiThongTinSoGui(dt);
                        A_txtMaSoG.ReadOnly = true;
                        A_btnThemPhieuGui.Enabled = true;
                    }
                    else
                    {
                        A_txtLoaiTietKiemG.Text = tenloaitietkiem.ToString() + " tháng";
                        A_HienThiThongTinSoGui(dt);

                        MessageBoxEx.EnableGlass = false;
                        MessageBoxEx.MessageBoxTextColor = Color.White;
                        MessageBoxEx.Show("Sổ có kỳ hạn, không nhận gửi tiền", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    }
                }
            }
        }

        private void A_btnTraCuuG_Click(object sender, EventArgs e)
        {
            A_ResetThongTinSoGui();
            A_PHIEUGUI_BUS pg = new A_PHIEUGUI_BUS();
            DataTable dt;
            DateTime ngay = DateTime.Now;
            if (A_rdbMaSoG.Checked)
            {
                if (A_txtTraCuuMaSoG.Text.Trim() == "")
                {
                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Bạn phải nhập mã sổ cần tra cứu.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    int maso = int.Parse(A_txtTraCuuMaSoG.Text);
                    dt = pg.TraCuuPhieuGuiTheoMaSo(maso, ngay);
                    if (dt.Rows.Count == 0)
                    {
                        MessageBoxEx.EnableGlass = false;
                        MessageBoxEx.MessageBoxTextColor = Color.White;
                        MessageBoxEx.Show("Không tìm thấy phiếu gửi mã sổ cần tra cứu.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        A_dtgvPhieuGui.DataSource = dt;
                        A_btnXoaPhieuGui.Enabled = false;
                        A_btnCapNhatPhieuGui.Enabled = false;
                    }
                    else
                    {
                        A_dtgvPhieuGui.DataSource = dt;
                        A_HienThiDongDauTienCuaDTGVGuiTien(dt);
                    }

                }
            }
            else if (A_rdbHoTenG.Checked)
            {
                string hoten = A_txtTraCuuHoTenG.Text.Trim();
                dt = pg.TraCuuPhieuGuiTheoHoTen(hoten, ngay);
                if (dt.Rows.Count == 0)
                {
                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Không tìm thấy mã sổ cần tra cứu.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    A_dtgvPhieuGui.DataSource = dt;
                    A_btnXoaPhieuGui.Enabled = false;
                    A_btnCapNhatPhieuGui.Enabled = false;
                }
                else
                {
                    A_dtgvPhieuGui.DataSource = dt;
                    A_HienThiDongDauTienCuaDTGVGuiTien(dt);
                }
            }
        }

        private void A_dtgvPhieuGui_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            DataTable dt = (DataTable)A_dtgvPhieuGui.DataSource;
            int chiso = int.Parse(A_dtgvPhieuGui.CurrentRow.Index.ToString());

            int maphieugui = int.Parse(dt.Rows[chiso]["MPGT"].ToString());
            int maso = int.Parse(dt.Rows[chiso]["MS"].ToString());
            double sotiengui = double.Parse(dt.Rows[chiso]["SoTienGui"].ToString());

            A_PHIEUGUI_BUS pg = new A_PHIEUGUI_BUS();
            DataTable dt_thongtinso = pg.LayThongTinSo(maso);
            A_HienThiThongTinSoGui(dt_thongtinso);

            A_txtSoTienGui.Text = sotiengui.ToString();
            A_txtMaSoG.Text = maso.ToString();
            A_txtMaSoG.ReadOnly = true;
            A_txtLoaiTietKiemG.Text = "Không kỳ hạn";
            A_btnThemPhieuGui.Enabled = true;
            A_btnXoaPhieuGui.Enabled = true;
            A_btnCapNhatPhieuGui.Enabled = true;
        }

        #endregion

        #region Sự kiện click button Thêm, Cập nhật, Xóa phiếu gửi
        private void A_btnThemPhieuGui_Click(object sender, EventArgs e)
        {
            A_PHIEUGUI_BUS pg_bus = new A_PHIEUGUI_BUS();
            A_PHIEUGUI_DTO pg_dto = new A_PHIEUGUI_DTO();
            CultureInfo c = new CultureInfo("fr-FR");
            DateTime ngay = new DateTime();

            // Lấy bảng qui định để kiểm tra số tiền gửi có hợp lệ với qui định tiền gửi tối thiểu không
            DataTable dt = pg_bus.LayBangQuiDinh();
            double tienguitoithieu = double.Parse(dt.Rows[0]["TienGuiToiThieu"].ToString());

            string chuoiloi = A_KiemTraPhieuGuiHopLe();
            if (chuoiloi != "")
            {
                MessageBoxEx.EnableGlass = false;
                MessageBoxEx.MessageBoxTextColor = Color.White;
                MessageBoxEx.Show(chuoiloi, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                int maso = int.Parse(A_txtMaSoG.Text);
                pg_dto.MaSo = maso;
                pg_dto.SoTienGui = double.Parse(A_txtSoTienGui.Text);
                DateTime.TryParse(A_txtNgayGui.Text, c, DateTimeStyles.None, out ngay);
                pg_dto.NgayGui = ngay;

                //Nếu tiền gửi thấp hơn qui định
                if (pg_dto.SoTienGui < tienguitoithieu)
                {
                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Tiền gửi tối thiểu là: " + tienguitoithieu.ToString() + " VND", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    //Thêm phiếu gửi tiền đồng thời thêm tiền vào sổ tiết kiệm

                    pg_bus.Them(pg_dto);
                    pg_bus.ThemTienVaoSo(pg_dto);

                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Đã thêm phiếu gửi.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    //Load thông tin tất cả phiếu gửi thực hiện vào ngày hiện tại vào datagridview
                    dt = pg_bus.TraCuuPhieuGuiTheoMaSo(maso, ngay);
                    A_dtgvPhieuGui.DataSource = dt;
                    A_HienThiDongDauTienCuaDTGVGuiTien(dt);
                }
            }
        }

        private void A_btnCapNhatPhieuGui_Click(object sender, EventArgs e)
        {
            MessageBoxEx.EnableGlass = false;
            MessageBoxEx.MessageBoxTextColor = Color.White;
            if (MessageBoxEx.Show("Bạn muốn sửa phiếu gửi này?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                A_PHIEUGUI_DTO pg_dto = new A_PHIEUGUI_DTO();
                A_PHIEUGUI_BUS pg_bus = new A_PHIEUGUI_BUS();

                DataTable dt = (DataTable)A_dtgvPhieuGui.DataSource;

                //Nếu datasource của datagridview có dữ liệu
                if (dt != null)
                {
                    int chiso = int.Parse(A_dtgvPhieuGui.CurrentRow.Index.ToString());

                    pg_dto.MaPhieuGui = int.Parse(dt.Rows[chiso]["MPGT"].ToString());
                    pg_dto.MaSo = int.Parse(dt.Rows[chiso]["MS"].ToString());
                    pg_dto.SoTienGui = double.Parse(dt.Rows[chiso]["SoTienGui"].ToString());

                    double sotienhienco_truockhicapnhat = double.Parse(A_txtSoTienHienCoG.Text);
                    double sotiengui_truockhicapnhat = pg_dto.SoTienGui;
                    string chuoiloi = A_KiemTraPhieuGuiHopLe();

                    //Nếu phiếu gửi hợp lệ
                    if (chuoiloi == "")
                    {
                        double sotiengui_chinhsua = double.Parse(A_txtSoTienGui.Text);

                        //Trừ tiền gửi cũ ở sổ tiết kiệm và cập nhật số tiền gửi mới ở phiếu gửi đồng thời cộng số tiền gửi mới vào sổ tiết kiệm
                        pg_bus.TruTienTuSo(pg_dto);
                        pg_dto.SoTienGui = sotiengui_chinhsua;
                        pg_bus.CapNhat(pg_dto);
                        pg_bus.ThemTienVaoSo(pg_dto);

                        MessageBoxEx.EnableGlass = false;
                        MessageBoxEx.MessageBoxTextColor = Color.White;
                        MessageBoxEx.Show("Đã cập nhật phiếu gửi tiền.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);

                        //Hiển thị lại tất cả phiếu gửi của sổ được thực hiện vào ngày hiện tại lên datagridview
                        dt = pg_bus.TraCuuPhieuGuiTheoMaSo(pg_dto.MaSo, DateTime.Now);
                        A_dtgvPhieuGui.DataSource = dt;
                        A_HienThiDongDauTienCuaDTGVGuiTien(dt);
                    }
                    //Phiếu không hợp lệ (số tiền gửi, mã sổ bỏ trống)
                    else
                    {
                        MessageBoxEx.EnableGlass = false;
                        MessageBoxEx.MessageBoxTextColor = Color.White;
                        MessageBoxEx.Show(chuoiloi, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                //chưa chọn phiếu gửi cần chỉnh sửa (thường là khi datagridview rỗng mà click nút cập nhật)
                else
                {
                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Bạn phải chọn phiếu gửi cần chỉnh sửa.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void A_btnXoaPhieuGui_Click(object sender, EventArgs e)
        {
            MessageBoxEx.EnableGlass = false;
            MessageBoxEx.MessageBoxTextColor = Color.White;
            if (MessageBoxEx.Show("Bạn muốn xóa phiếu gửi này?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {

                A_PHIEUGUI_DTO pg_dto = new A_PHIEUGUI_DTO();
                A_PHIEUGUI_BUS pg_bus = new A_PHIEUGUI_BUS();

                DataTable dt = (DataTable)A_dtgvPhieuGui.DataSource;
                //Nếu datasource của datagridview có dữ liệu
                if (dt != null)
                {
                    int chiso = int.Parse(A_dtgvPhieuGui.CurrentRow.Index.ToString());
                    double sotienhienco_truockhixoa = double.Parse(A_txtSoTienHienCoG.Text);

                    pg_dto.MaPhieuGui = int.Parse(dt.Rows[chiso]["MPGT"].ToString());
                    pg_dto.MaSo = int.Parse(dt.Rows[chiso]["MS"].ToString());
                    pg_dto.SoTienGui = double.Parse(dt.Rows[chiso]["SoTienGui"].ToString());

                    //Xóa phiếu gửi tiền đồng thời trừ tiền gửi ở sổ tiết kiệm
                    pg_bus.Xoa(pg_dto.MaPhieuGui);
                    pg_bus.TruTienTuSo(pg_dto);

                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Đã xóa phiếu gửi tiền.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    double sotienhienco_saukhixoa = sotienhienco_truockhixoa - pg_dto.SoTienGui;
                    A_txtSoTienHienCoG.Text = sotienhienco_saukhixoa.ToString();
                    dt = pg_bus.TraCuuPhieuGuiTheoMaSo(pg_dto.MaSo, DateTime.Now);
                    A_dtgvPhieuGui.DataSource = dt;
                    if (dt.Rows.Count > 0)
                        A_HienThiDongDauTienCuaDTGVGuiTien(dt);

                }
                //chưa chọn phiếu gửi cần xóa (thường là khi datagridview rỗng mà click nút xóa)
                else
                {
                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Bạn phải chọn phiếu gửi cần xóa", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void A_btntaoMoiG_Click(object sender, EventArgs e)
        {
            A_txtMaSoG.Text = "";
            A_ResetThongTinSoGui();
        }

        #endregion

        #endregion

        #endregion

        #region Phiếu rút tiền

        #region Các hàm xử lý
        private string A_KiemTraPhieuRutHopLe()
        {
            string chuoiloi = "";
            if (A_txtMaSoR.Text.Trim() == "" || A_txtMaSoR.ReadOnly == false)
                chuoiloi += "Bạn phải nhập mã sổ và kiểm tra mã sổ có hợp lệ không.\n";
            if (A_txtSoTienRut.Text.Trim() == "")
                chuoiloi += "Bạn phải nhập số tiền rút.";
            return chuoiloi;
        }

        //Kiểm tra sổ được phép rút tiền chưa: sổ được phép rút tiền khi mở sổ được 1 khoảng thời gian qui định (thoigianguitoithieu)
        private bool A_DuocPhepRutTien(DateTime ngaymoso, ref int thoigianguitoithieu)
        {
            A_PHIEURUT_BUS pr_bus = new A_PHIEURUT_BUS();
            DataTable dt_quidinh = pr_bus.LayBangQuiDinh();
            //Tính khoảng cách từ ngày mở sổ đến ngày hiện tại là bao nhiêu ngày
            DateTime ngayhientai = DateTime.Now;
            TimeSpan ts = ngayhientai - ngaymoso;
            int khoangcach = ts.Days;

            thoigianguitoithieu = int.Parse(dt_quidinh.Rows[0]["ThoiGianGuiToiThieu"].ToString());
            //Nếu lớn hơn hoặc bằng thời gian qui định thì đúng
            if (khoangcach >= thoigianguitoithieu)
                return true;
            return false;
        }

        private void A_ResetThongTinSoRut()
        {
            A_PHIEURUT_BUS pr = new A_PHIEURUT_BUS();
            DataTable dt = pr.TraCuuPhieuRutTheoMaSo(-1, DateTime.Now);
            A_dtgvPhieuRut.DataSource = dt;

            A_btnThemPhieuRut.Enabled = false;
            A_btnCapNhatPhieuRut.Enabled = false;
            A_btnXoaPhieuRut.Enabled = false;

            A_txtLoaiTietKiemR.Text = "";
            A_txtHoTenR.Text = "";
            A_sbtnGioiTinhR.Value = false;
            A_txtCMNDR.Text = "";
            A_txtDienThoaiR.Text = "";
            A_txtDiaChiR.Text = "";
            A_txtTinhTrangR.Text = "";
            A_txtSoTienHienCoR.Text = "";
            A_txtSoTienRut.ReadOnly = false;
            A_txtSoTienRut.Text = "";
        }

        private void A_HienThiThongTinSoRut(DataTable dt)
        {
            A_txtMaSoR.Text = dt.Rows[0]["MS"].ToString();
            A_txtHoTenR.Text = dt.Rows[0]["TenKhachHang"].ToString();
            int gt = int.Parse(dt.Rows[0]["GioiTinh"].ToString());
            if (gt == 1)
                A_sbtnGioiTinhR.Value = false;
            else
                A_sbtnGioiTinhR.Value = true;

            A_txtCMNDR.Text = dt.Rows[0]["CMND"].ToString();
            A_txtDienThoaiR.Text = dt.Rows[0]["DienThoai"].ToString();
            A_txtDiaChiR.Text = dt.Rows[0]["DiaChi"].ToString();

            int tt = int.Parse(dt.Rows[0]["TinhTrang"].ToString());
            if (tt == 1)
                A_txtTinhTrangR.Text = "Mở";
            else
            {
                A_txtTinhTrangR.Text = "Đóng";
                A_btnCapNhatPhieuRut.Enabled = false;
                A_btnThemPhieuRut.Enabled = false;
            }

            int tenloaitietkiem = int.Parse(dt.Rows[0]["TenLoaiTietKiem"].ToString());
            //Sổ không kỳ hạn
            if (tenloaitietkiem == 0)
            {
                A_txtLoaiTietKiemR.Text = "Không kỳ hạn";
                A_txtSoTienHienCoR.Text = dt.Rows[0]["SoTienHienCo"].ToString();
                A_btnThemPhieuRut.Enabled = true;
            }
            //Sổ có kỳ hạn
            else
            {
                A_txtLoaiTietKiemR.Text = tenloaitietkiem.ToString() + " tháng";
                A_btnCapNhatPhieuRut.Enabled = false;

                double laisuat = double.Parse(dt.Rows[0]["SOTIETKIEM.LaiSuat"].ToString());
                double sotienhienco = double.Parse(dt.Rows[0]["SoTienHienCo"].ToString());
                DateTime ngaymoso = DateTime.Parse(dt.Rows[0]["NgayMoSo"].ToString());
                DateTime ngayhethan = DateTime.Parse(dt.Rows[0]["NgayHetHan"].ToString());
                DateTime ngay = DateTime.Now;

                //Sổ chưa đáo hạn không được rút tiền
                if (ngay < ngayhethan)
                {
                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Sổ chưa đáo hạn, không được rút tiền", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    A_btnThemPhieuRut.Enabled = false;
                }
                else
                {
                    //Tính số lần đáo hạn của sổ
                    DateTime ngaytam = ngayhethan;
                    int solandaohan = 0;
                    while (ngaytam < ngay)
                    {
                        solandaohan++;
                        ngaytam = ngaytam.AddMonths(tenloaitietkiem);
                    }
                    //Tính tiền hiện có trong sổ sau khi đã tính luôn tiền lãi 
                    double tien = sotienhienco + sotienhienco * solandaohan * laisuat;
                    A_txtSoTienHienCoR.Text = tien.ToString();
                    A_txtSoTienRut.Text = tien.ToString();
                    A_txtSoTienRut.ReadOnly = true;
                }

            }
        }

        private void A_HienThiDongDauTienCuaDTGVRutTien(DataTable dt)
        {
            if (dt.Rows.Count > 0)
            {
                int maso = int.Parse(dt.Rows[0]["MS"].ToString());
                double sotienrut = double.Parse(dt.Rows[0]["SoTienRut"].ToString());

                A_PHIEURUT_BUS pr = new A_PHIEURUT_BUS();
                DataTable dt_thongtinso = pr.LayThongTinSo(maso);
                A_HienThiThongTinSoRut(dt_thongtinso);
                A_txtMaSoR.ReadOnly = true;
                A_txtSoTienRut.Text = sotienrut.ToString();
                A_btnCapNhatPhieuRut.Enabled = true;
                A_btnXoaPhieuRut.Enabled = true;

                int tenloaitietkiem = int.Parse(dt_thongtinso.Rows[0]["TenLoaiTietKiem"].ToString());
                if (tenloaitietkiem == 0)
                    A_txtLoaiTietKiemR.Text = "Không kỳ hạn";
                else
                    A_txtLoaiTietKiemR.Text = tenloaitietkiem.ToString() + " tháng";
            }
        }
        #endregion

        #region Các hàm sự kiện

        #region KeyPress các textbox mã sổ, số tiền rút, tra cứu mã sổ, không nhập chữ chỉ được nhập số và gõ backspace

        private void A_txtMaSoR_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsNumber(e.KeyChar))
                e.Handled = true;
            else
                e.Handled = false;

            if (e.KeyChar == (int)Keys.Back)
                e.Handled = false;
        }

        private void A_txtSoTienRut_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsNumber(e.KeyChar))
                e.Handled = true;
            else
                e.Handled = false;

            if (e.KeyChar == (int)Keys.Back)
                e.Handled = false;
        }

        private void A_txtTraCuuMaSoR_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsNumber(e.KeyChar))
                e.Handled = true;
            else
                e.Handled = false;

            if (e.KeyChar == (int)Keys.Back)
                e.Handled = false;
        }

        #endregion

        #region Sự kiện checkedChange của radiobutton

        private void A_rdbMaSoR_CheckedChanged(object sender, EventArgs e)
        {
            if (A_rdbMaSoR.Checked)
            {
                A_txtTraCuuMaSoR.ReadOnly = false;
                A_txtTraCuuHoTenR.Text = "";
                A_txtTraCuuHoTenR.ReadOnly = true;
            }
            else
            {
                A_txtTraCuuMaSoR.Text = "";
                A_txtTraCuuMaSoR.ReadOnly = true;
                A_txtTraCuuHoTenR.ReadOnly = false;
            }
        }

        private void A_rdbHoTenR_CheckedChanged(object sender, EventArgs e)
        {
            if (A_rdbHoTenR.Checked)
            {
                A_txtTraCuuMaSoR.Text = "";
                A_txtTraCuuMaSoR.ReadOnly = true;
                A_txtTraCuuHoTenR.ReadOnly = false;
            }
            else
            {
                A_txtTraCuuMaSoR.ReadOnly = false;
                A_txtTraCuuHoTenR.Text = "";
                A_txtTraCuuHoTenR.ReadOnly = true;
            }
        }



        #endregion

        #region Sự kiện click button kiểm tra sổ, tra cứu, datagridview phiếu rút


        private void A_dtgvPhieuRut_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            A_btnThemPhieuRut.Enabled = true;
            A_btnCapNhatPhieuGui.Enabled = true;
            A_txtSoTienRut.ReadOnly = false;

            DataTable dt = (DataTable)A_dtgvPhieuRut.DataSource;
            int chiso = int.Parse(A_dtgvPhieuRut.CurrentRow.Index.ToString());

            int maphieurut = int.Parse(dt.Rows[chiso]["MPRT"].ToString());
            int maso = int.Parse(dt.Rows[chiso]["MS"].ToString());
            double sotienrut = double.Parse(dt.Rows[chiso]["SoTienRut"].ToString());

            A_PHIEURUT_BUS pr = new A_PHIEURUT_BUS();
            DataTable dt_thongtinso = pr.LayThongTinSo(maso);
            A_btnCapNhatPhieuRut.Enabled = true;
            A_btnXoaPhieuRut.Enabled = true;
            A_HienThiThongTinSoRut(dt_thongtinso);

            A_txtSoTienRut.Text = sotienrut.ToString();
            A_txtMaSoR.Text = maso.ToString();
            A_txtMaSoR.ReadOnly = true;
        }

        private void A_btnKiemTraSoR_Click(object sender, EventArgs e)
        {
            A_ResetThongTinSoRut();
            if (A_txtMaSoR.Text.Trim() == "")
            {
                MessageBoxEx.EnableGlass = false;
                MessageBoxEx.MessageBoxTextColor = Color.White;
                MessageBoxEx.Show("Bạn phải nhập mã sổ cần kiểm tra", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                A_PHIEURUT_BUS pr = new A_PHIEURUT_BUS();
                int maso = int.Parse(A_txtMaSoR.Text);
                DataTable dt = pr.LayThongTinSo(maso);
                //Không tìm thấy sổ
                if (dt.Rows.Count == 0)
                {
                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Không có sổ này.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    A_HienThiThongTinSoRut(dt);
                    A_txtMaSoR.ReadOnly = true;

                    DateTime ngaymoso = DateTime.Parse(dt.Rows[0]["NgayMoSo"].ToString());
                    int thoigianguitoithieu = 0;

                    //Sổ đã đóng không rút tiền được
                    if (int.Parse(dt.Rows[0]["TinhTrang"].ToString()) == 0)
                    {
                        MessageBoxEx.EnableGlass = false;
                        MessageBoxEx.MessageBoxTextColor = Color.White;
                        MessageBoxEx.Show("Sổ này đã đóng.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    //Không được rút tiền vì mở sổ chưa quá thời gian qui định
                    if (!A_DuocPhepRutTien(ngaymoso, ref thoigianguitoithieu))
                    {
                        MessageBoxEx.EnableGlass = false;
                        MessageBoxEx.MessageBoxTextColor = Color.White;
                        MessageBoxEx.Show("Chỉ được rút tiền khi mở sổ ít nhất " + thoigianguitoithieu.ToString() + " ngày", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        A_btnThemPhieuRut.Enabled = false;
                    }

                }
            }
        }

        private void A_btnTraCuuR_Click(object sender, EventArgs e)
        {
            A_ResetThongTinSoRut();
            A_PHIEURUT_BUS pr = new A_PHIEURUT_BUS();
            DataTable dt;
            DateTime ngay = DateTime.Now;
            //Nếu tra cứu theo mã sổ
            if (A_rdbMaSoR.Checked)
            {
                if (A_txtTraCuuMaSoR.Text.Trim() == "")
                {
                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Bạn phải nhập mã sổ cần tra cứu.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    int maso = int.Parse(A_txtTraCuuMaSoR.Text);
                    dt = pr.TraCuuPhieuRutTheoMaSo(maso, ngay);
                    if (dt.Rows.Count == 0)
                    {
                        MessageBoxEx.EnableGlass = false;
                        MessageBoxEx.MessageBoxTextColor = Color.White;
                        MessageBoxEx.Show("Không tìm thấy phiếu rút tiền của mã sổ này.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        A_dtgvPhieuRut.DataSource = dt;
                        A_btnCapNhatPhieuRut.Enabled = false;
                        A_btnXoaPhieuRut.Enabled = false;
                    }
                    else
                    {
                        A_HienThiDongDauTienCuaDTGVRutTien(dt);
                        A_dtgvPhieuRut.DataSource = dt;
                    }
                }
            }
            //Nếu tra cứu theo họ tên
            else if (A_rdbHoTenR.Checked)
            {
                string hoten = A_txtTraCuuHoTenR.Text.Trim();
                dt = pr.TraCuuPhieuRutTheoHoTen(hoten, ngay);
                if (dt.Rows.Count == 0)
                {
                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Không tìm thấy phiếu rút tiền của khách hàng này.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    A_dtgvPhieuRut.DataSource = dt;
                    A_btnCapNhatPhieuRut.Enabled = false;
                    A_btnXoaPhieuRut.Enabled = false;
                }
                else
                {
                    A_HienThiDongDauTienCuaDTGVRutTien(dt);
                    A_dtgvPhieuRut.DataSource = dt;
                }
            }


        }

        #endregion

        #region Click button Thêm, Cập nhật, Xóa phiếu rút
        private void A_btnThemPhieuRut_Click(object sender, EventArgs e)
        {
            A_PHIEURUT_BUS pr_bus = new A_PHIEURUT_BUS();
            A_PHIEURUT_DTO pr_dto = new A_PHIEURUT_DTO();
            CultureInfo c = new CultureInfo("fr-FR");
            DateTime ngay = new DateTime();
            string chuoiloi = A_KiemTraPhieuRutHopLe();
            if (chuoiloi == "")
            {
                pr_dto.MaSo = int.Parse(A_txtMaSoR.Text);
                pr_dto.SoTienRut = double.Parse(A_txtSoTienRut.Text);
                DateTime.TryParse(A_txtNgayRut.Text, c, DateTimeStyles.None, out ngay);
                pr_dto.NgayRut = ngay;
                //Số tiền rút lớn hơn số tiền hiện có: thông báo không hợp lệ và không cho rút
                if (pr_dto.SoTienRut > double.Parse(A_txtSoTienHienCoR.Text))
                {
                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Số tiền rút phải nhỏ hơn hoặc bằng số tiền hiện có trong sổ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    DataTable dt = pr_bus.LayThongTinSo(pr_dto.MaSo);
                    int tenloaitietkiem = int.Parse(dt.Rows[0]["TenLoaiTietKiem"].ToString());
                    DateTime ngaymoso = DateTime.Parse(dt.Rows[0]["NgayMoSo"].ToString());

                    if (tenloaitietkiem == 0) // Loại tiết kiệm không kỳ hạn
                    {
                        int thoigianguitoithieu = 0;
                        if (A_DuocPhepRutTien(ngaymoso, ref thoigianguitoithieu) == true)//Nếu mở sổ được hơn thời gian qui định thì được rút
                        {
                            //Thêm phiếu rút tiền đồng thời trừ tiền ở sổ
                            pr_bus.Them(pr_dto);
                            pr_bus.TruTienTuSo(pr_dto);
                            string thongbao = "Đã thêm phiếu rút tiền.\n";

                            dt = pr_bus.LayThongTinSo(pr_dto.MaSo);
                            double sotien = double.Parse(dt.Rows[0]["SoTienHienCo"].ToString());
                            //Nếu số tiền trong sổ =0 thì đóng sổ
                            if (sotien == 0)
                            {
                                pr_bus.DongSoTietKiem(pr_dto);
                                thongbao += "Sổ đã đóng.";
                            }
                            MessageBoxEx.EnableGlass = false;
                            MessageBoxEx.MessageBoxTextColor = Color.White;
                            MessageBoxEx.Show(thongbao, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);

                            dt = pr_bus.TraCuuPhieuRutTheoMaSo(pr_dto.MaSo, ngay);
                            A_HienThiDongDauTienCuaDTGVRutTien(dt);
                            A_dtgvPhieuRut.DataSource = dt;

                        }
                        else
                        {
                            MessageBoxEx.EnableGlass = false;
                            MessageBoxEx.MessageBoxTextColor = Color.White;
                            MessageBoxEx.Show("Chỉ được rút tiền khi mở sổ ít nhất " + thoigianguitoithieu.ToString() + " ngày", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            A_btnThemPhieuRut.Enabled = false;
                        }
                    }
                    else // Loại có kỳ hạn: chỉ được rút khi quá hạn và phải rút hết toàn bộ, sau khi rút xong đóng sổ
                    {
                        //Thêm phiếu rút và đóng sổ
                        pr_bus.Them(pr_dto);
                        pr_bus.DongSoTietKiem(pr_dto);
                        MessageBoxEx.EnableGlass = false;
                        MessageBoxEx.MessageBoxTextColor = Color.White;
                        MessageBoxEx.Show("Đã thêm phiếu rút tiền. Sổ đã đóng.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        A_txtTinhTrangR.Text = "Đóng";
                        A_txtSoTienHienCoR.Text = "0";
                    }

                }
            }
            else
            {
                MessageBoxEx.EnableGlass = false;
                MessageBoxEx.MessageBoxTextColor = Color.White;
                MessageBoxEx.Show(chuoiloi, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        //Chỉ áp dụng cho sổ không kỳ hạn
        private void A_btnCapNhatPhieuRut_Click(object sender, EventArgs e)
        {
            MessageBoxEx.EnableGlass = false;
            MessageBoxEx.MessageBoxTextColor = Color.White;
            if (MessageBoxEx.Show("Bạn muốn sửa phiếu rút này?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                A_PHIEURUT_DTO pr_dto = new A_PHIEURUT_DTO();
                A_PHIEURUT_BUS pr_bus = new A_PHIEURUT_BUS();

                DataTable dt = (DataTable)A_dtgvPhieuRut.DataSource; ;
                if (dt != null)
                {
                    int chiso = int.Parse(A_dtgvPhieuRut.CurrentRow.Index.ToString());

                    pr_dto.MaPhieuRut = int.Parse(dt.Rows[chiso]["MPRT"].ToString());
                    pr_dto.MaSo = int.Parse(dt.Rows[chiso]["MS"].ToString());
                    pr_dto.SoTienRut = double.Parse(dt.Rows[chiso]["SoTienRut"].ToString());

                    double sotienhienco_truockhicapnhat = double.Parse(A_txtSoTienHienCoR.Text);
                    double sotienrut_truockhicapnhat = pr_dto.SoTienRut;
                    string chuoiloi = A_KiemTraPhieuRutHopLe();

                    if (chuoiloi == "")
                    {
                        double sotienrut_chinhsua = double.Parse(A_txtSoTienRut.Text);
                        if ((sotienrut_chinhsua - sotienrut_truockhicapnhat) > sotienhienco_truockhicapnhat)
                        {
                            MessageBoxEx.EnableGlass = false;
                            MessageBoxEx.MessageBoxTextColor = Color.White;
                            MessageBoxEx.Show("Số tiền rút phải nhỏ hơn hoặc bằng số tiền hiện có trong sổ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        else
                        {
                            //Cộng tiền rút cũ vào sổ tiết kiệm; cập nhật số tiền rút mới ở phiếu rút đồng thời trừ số tiền rút mới ở sổ tiết kiệm
                            pr_bus.ThemTienVaoSo(pr_dto);
                            pr_dto.SoTienRut = sotienrut_chinhsua;

                            pr_bus.CapNhat(pr_dto);
                            pr_bus.TruTienTuSo(pr_dto);

                            DataTable dt_thongtinso = pr_bus.LayThongTinSo(pr_dto.MaSo);
                            string thongbao = "Đã cập nhật phiếu rút tiền.\n";
                            double tienhienco = double.Parse(dt_thongtinso.Rows[0]["SoTienHienCo"].ToString());
                            //Nếu rút hết tiền: đóng sổ
                            if (tienhienco == 0)
                            {
                                pr_bus.DongSoTietKiem(pr_dto);
                                thongbao += "Sổ đã đóng.";
                            }
                            MessageBoxEx.EnableGlass = false;
                            MessageBoxEx.MessageBoxTextColor = Color.White;
                            MessageBoxEx.Show(thongbao, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            DataTable dt_phieurut = pr_bus.TraCuuPhieuRutTheoMaSo(pr_dto.MaSo, DateTime.Now);
                            A_HienThiDongDauTienCuaDTGVRutTien(dt_phieurut);
                            A_dtgvPhieuRut.DataSource = dt_phieurut;
                        }

                    }
                    else
                    {
                        MessageBoxEx.EnableGlass = false;
                        MessageBoxEx.MessageBoxTextColor = Color.White;
                        MessageBoxEx.Show(chuoiloi, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Bạn phải chọn phiếu gửi cần chỉnh sửa.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void A_btnXoaPhieuRut_Click(object sender, EventArgs e)
        {
            DateTime ngayhientai = DateTime.Now;
            MessageBoxEx.EnableGlass = false;
            MessageBoxEx.MessageBoxTextColor = Color.White;
            if (MessageBoxEx.Show("Bạn muốn xóa phiếu rút này?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                A_PHIEURUT_DTO pr_dto = new A_PHIEURUT_DTO();
                A_PHIEURUT_BUS pr_bus = new A_PHIEURUT_BUS();

                DataTable dt = (DataTable)A_dtgvPhieuRut.DataSource;
                if (dt != null)
                {
                    int chiso = int.Parse(A_dtgvPhieuRut.CurrentRow.Index.ToString());

                    pr_dto.MaPhieuRut = int.Parse(dt.Rows[chiso]["MPRT"].ToString());
                    pr_dto.MaSo = int.Parse(dt.Rows[chiso]["MS"].ToString());
                    pr_dto.SoTienRut = double.Parse(dt.Rows[chiso]["SoTienRut"].ToString());

                    DataTable dt_thongtinso = pr_bus.LayThongTinSo(pr_dto.MaSo);
                    int tenloaitietkiem = int.Parse(dt_thongtinso.Rows[0]["TenLoaiTietKiem"].ToString());
                    double laisuat = double.Parse(dt_thongtinso.Rows[0]["SOTIETKIEM.LaiSuat"].ToString());
                    int tinhtrang = int.Parse(dt_thongtinso.Rows[0]["TinhTrang"].ToString());
                    if (tenloaitietkiem == 0)
                    {
                        //Xóa phiếu rút tiền đồng thời cộng tiền lại vào sổ
                        pr_bus.Xoa(pr_dto.MaPhieuRut);
                        pr_bus.ThemTienVaoSo(pr_dto);

                        //Nếu sổ đang bị đóng mà xóa phiếu rút tức số tiền hiện có của sổ >0 nên mở sổ lại
                        if (tinhtrang == 0)
                            pr_bus.CapNhatTinhTrangMoCuaSoKhongKyHan(pr_dto.MaSo);

                        MessageBoxEx.EnableGlass = false;
                        MessageBoxEx.MessageBoxTextColor = Color.White;
                        MessageBoxEx.Show("Đã xóa phiếu rút tiền.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);

                        dt = pr_bus.TraCuuPhieuRutTheoMaSo(pr_dto.MaSo, ngayhientai);
                        A_dtgvPhieuRut.DataSource = dt;
                        A_ResetThongTinSoRut();
                        A_HienThiDongDauTienCuaDTGVRutTien(dt);

                    }
                    else //đối với sổ có kỳ hạn chỉ được xóa phiếu không được cập nhật vì rút là rút toàn bộ tiền hiện có
                    {
                        DateTime ngayhethan = DateTime.Parse(dt_thongtinso.Rows[0]["NgayHetHan"].ToString());
                        DateTime ngaytam = ngayhethan;
                        DateTime ngay = DateTime.Now;
                        int solandaohan = 0;
                        while (ngaytam < ngay)
                        {
                            solandaohan++;
                            ngaytam = ngaytam.AddMonths(tenloaitietkiem);
                        }
                        double sotienhienco = pr_dto.SoTienRut / (1 + laisuat * solandaohan);
                        pr_bus.Xoa(pr_dto.MaPhieuRut);
                        pr_bus.MoLaiSoCoKyHan(pr_dto.MaSo, sotienhienco);

                        MessageBoxEx.EnableGlass = false;
                        MessageBoxEx.MessageBoxTextColor = Color.White;
                        MessageBoxEx.Show("Đã xóa phiếu rút tiền.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        dt = pr_bus.TraCuuPhieuRutTheoMaSo(pr_dto.MaSo, ngayhientai);
                        A_dtgvPhieuRut.DataSource = dt;
                        A_ResetThongTinSoRut();
                    }
                }
                else //chưa chọn phiếu rút cần xóa
                {
                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Bạn phải chọn phiếu rút cần xóa", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void A_btnTaoMoiR_Click(object sender, EventArgs e)
        {
            A_ResetThongTinSoRut();
            A_txtMaSoR.ReadOnly = false;
        }

        #endregion





        #endregion

        #endregion








        //----------------------------------------------------------//





        //-------------------------- De ---------------------------//
        private void K_btnThem_Click(object sender, EventArgs e)
        {
            // Kiem tra hop le truoc khi luu thong tin chuyen xuong BUS
            string err = "";
            if (K_txtHoTenKH_Info.Text == "")
                err += "Bạn chưa điền họ tên !";
            if (K_txtDiaChi_Info.Text == "")
                err += "\nBạn chưa điền địa chỉ !";
            if (K_txtDienThoai_Info.Text == "")
                err += "\nBạn chưa điền số điện thoại !";
            if (K_txtCMND_Info.Text == "")
                err += "\nBạn chưa điền số chứng minh nhân dân !";
            if (K_txtSoTietGui_Info.Text == "")
                err += "\nBạn chưa điền số tiền gửi !";
            DateTime ngay = DateTime.Parse(K_txtNgayMoSo_Info.Text);
            if (ngay.CompareTo(DateTime.Today) != 0)
                err += "\nNgày mở sổ không hợp lệ !";
            if (err == "")
            {
                KT_SOTIETKIEM_DTO stkDTO = new KT_SOTIETKIEM_DTO();
                KT_SOTIETKIEM_BUS stkBUS = new KT_SOTIETKIEM_BUS();
                stkDTO.MS = int.Parse(K_txtMaSo_Info.Text);
                stkDTO.TenKhachHang = K_txtHoTenKH_Info.Text;
                if (K_sbtnGioiTinh_Info.Value)
                    stkDTO.GioiTinh = 0;
                else
                    stkDTO.GioiTinh = 1;
                stkDTO.DiaChi = K_txtDiaChi_Info.Text;
                stkDTO.DienThoai = K_txtDienThoai_Info.Text;
                stkDTO.CMND = K_txtCMND_Info.Text;
                stkDTO.MLTK = int.Parse(K_cbLoaiTietKiem_Info.SelectedValue.ToString());
                stkDTO.SoTienHienCo = float.Parse(K_txtSoTietGui_Info.Text);
                stkDTO.NgayMoSo = DateTime.Parse(K_txtNgayMoSo_Info.Text);
                try
                {
                    stkDTO.NgayHetHan = DateTime.Parse(K_txtNgayHetHan_Info.Text);
                }
                catch { }
                stkDTO.LaiSuat = stkBUS.LayLaiSuat(stkDTO.MLTK);
                string tmp = stkBUS.ThemMoiSoTietKiem(stkDTO);

                if (tmp == "")
                {
                    MessageBoxEx.Show("Thêm mới sổ tiết kiệm thành công !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBoxEx.Show(tmp, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBoxEx.EnableGlass = false;
                MessageBoxEx.MessageBoxTextColor = Color.White;
                MessageBoxEx.Show(err, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }




        }

        private void DS_LoaiTietKiem(KT_SOTIETKIEM_BUS stk, ComboBox ltk)
        {
            DataTable loaiTietKiem_K = new DataTable();
            loaiTietKiem_K = stk.LoadDSLoaiTietKiem();


            loaiTietKiem_K.Columns.Add("TenChuoi", typeof(string));
            for (int i = 0; i < loaiTietKiem_K.Rows.Count; i++)
            {
                int tmp = int.Parse(loaiTietKiem_K.Rows[i]["TenLoaiTietKiem"].ToString());
                if (tmp == 0)
                    loaiTietKiem_K.Rows[i]["TenChuoi"] = "Không kỳ hạn";
                else
                    loaiTietKiem_K.Rows[i]["TenChuoi"] = loaiTietKiem_K.Rows[i]["TenLoaiTietKiem"].ToString() + " tháng";
            }

            ltk.DataSource = loaiTietKiem_K;
            ltk.DisplayMember = "TenChuoi";
            ltk.ValueMember = "MLTK";

        }

        private void K_txtDienThoai_Info_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsNumber(e.KeyChar))
                e.Handled = true;
            if (char.IsControl(e.KeyChar))
                e.Handled = false;
        }

        private void K_btnXoa_Click(object sender, EventArgs e)
        {
            if (K_dgvDSSoTietKiem.Rows.Count > 0)
            {
                if (MessageBoxEx.Show("Bạn có chắc muốn xóa sổ này ?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    int ma = int.Parse(K_dgvDSSoTietKiem.CurrentRow.Cells["MaSo"].Value.ToString());
                    KT_SOTIETKIEM_BUS stkBUS = new KT_SOTIETKIEM_BUS();
                    stkBUS.XoaMotSoTietKiem(ma);
                    K_dgvDSSoTietKiem.Rows.RemoveAt(K_dgvDSSoTietKiem.CurrentRow.Index);
                }
            }
            else
                MessageBoxEx.Show("Bạn chưa chọn sổ cần xóa ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void K_cbLoaiTietKiem_Info_SelectedIndexChanged(object sender, EventArgs e)
        {
            

            DateTime ngayHetHan = new DateTime();
            try
            {
                KT_SOTIETKIEM_BUS stk = new KT_SOTIETKIEM_BUS();

                int tmp = stk.LayTenLoaiTietKiem (int.Parse (K_cbLoaiTietKiem_Info.SelectedValue.ToString()));
                ngayHetHan = DateTime.Today.AddMonths(tmp);
                K_txtNgayHetHan_Info.Text = ngayHetHan.ToShortDateString();
                if (tmp == 0)
                    K_txtNgayHetHan_Info.Text = "";
            }
            catch
            { }
        }

        private void K_btnTaoMoi_Click(object sender, EventArgs e)
        {
            KT_SOTIETKIEM_BUS stk = new KT_SOTIETKIEM_BUS();
            int maSo_K = stk.LayMaSoTietKiem();
            maSo_K++;
            K_txtMaSo_Info.Text = maSo_K.ToString();
            K_txtHoTenKH_Info.Text = "";
            K_sbtnGioiTinh_Info.Value = false;
            K_txtDiaChi_Info.Text = "";
            K_txtDienThoai_Info.Text = "";
            K_txtCMND_Info.Text = "";
            K_cbLoaiTietKiem_Info.SelectedIndex = 0;
            K_txtSoTietGui_Info.Text = "";
            K_txtNgayMoSo_Info.Text = DateTime.Today.ToShortDateString();
        }

        private void K_ckMaSo_Sear_CheckedChanged(object sender, EventArgs e)
        {
            if (K_ckMaSo_Sear.Checked)
                K_txtMaSo_Sear.Enabled = true;
            else
                K_txtMaSo_Sear.Enabled = false;
        }

        private void K_ckTinhTrangSo_Sear_CheckedChanged(object sender, EventArgs e)
        {
            if (K_ckTinhTrangSo_Sear.Checked)
                K_cbTinhTrangSo_Sear.Enabled = true;
            else
                K_cbTinhTrangSo_Sear.Enabled = false;
        }

        private void K_ckHoTenKH_Sear_CheckedChanged(object sender, EventArgs e)
        {
            if (K_ckHoTenKH_Sear.Checked)
                K_txtHoTenKH_Sear.Enabled = true;
            else
                K_txtHoTenKH_Sear.Enabled = false;
        }

        private void K_ckLoaiTietKiem_Sear_CheckedChanged(object sender, EventArgs e)
        {
            if (K_ckLoaiTietKiem_Sear.Checked)
                K_cbLoaiTietKiem_Sear.Enabled = true;
            else
                K_cbLoaiTietKiem_Sear.Enabled = false;

        }

        private void K_ckNgayMoSo_Sear_CheckedChanged(object sender, EventArgs e)
        {
            if (K_ckNgayMoSo_Sear.Checked)
            {
                K_dtiTuNgay_Sear.Enabled = true;
                K_dtiDenNgay_Sear.Enabled = true;
            }
            else
            {
                K_dtiTuNgay_Sear.Enabled = false;
                K_dtiDenNgay_Sear.Enabled = false;
            }
        }

        private void K_btnTraCuu_Sear_Click(object sender, EventArgs e)
        {
            string err = "";
            if (K_ckMaSo_Sear.Checked && K_txtMaSo_Sear.Text == "")
                err += "Chưa điền mã sổ !";
            if (K_ckHoTenKH_Sear.Checked && K_txtHoTenKH_Sear.Text == "")
                err += "\nChưa điền tên khách hàng !";
            if (K_ckNgayMoSo_Sear.Checked)
            {
                DateTime tu = DateTime.Parse(K_dtiTuNgay_Sear.Value.ToShortDateString());
                DateTime den = DateTime.Parse(K_dtiDenNgay_Sear.Value.ToShortDateString());
                if (den.CompareTo(tu) < 0)
                    err += "\nNgày mở sổ không hợp lệ !";
            }
            if (err == "")
            {
                string sql;
                sql = "Select s.MS,l.TenLoaiTietKiem,s.MLTK,s.TenKhachHang,s.DienThoai,s.CMND,s.SoTienHienCo,s.NgayMoSo,s.TinhTrang,s.GioiTinh,s.DiaChi,s.NgayHetHan " +
                      "From SOTIETKIEM s, LOAITIETKIEM l " +
                      "Where s.MLTK = l.MLTK ";
                if (K_ckMaSo_Sear.Checked)
                    sql += "and MS = " + K_txtMaSo_Sear.Text;
                if (K_ckTinhTrangSo_Sear.Checked)
                {
                    if (K_cbTinhTrangSo_Sear.SelectedIndex == 0)
                        sql += " and TinhTrang = 1";
                    else
                        sql += " and TinhTrang = 0";
                }
                if (K_ckHoTenKH_Sear.Checked)
                    sql += " and TenKhachHang like '%" + K_txtHoTenKH_Sear.Text + "%'";
                if (K_ckLoaiTietKiem_Sear.Checked)
                    sql += " and MLTK = " + K_cbLoaiTietKiem_Sear.SelectedValue.ToString();
                if (K_ckNgayMoSo_Sear.Checked)
                    sql += " and NgayMoSo between #" + K_dtiTuNgay_Sear.Value.ToShortDateString() + "# and #" + K_dtiDenNgay_Sear.Value.ToShortDateString() + "#";
                KT_SOTIETKIEM_BUS stkBUS = new KT_SOTIETKIEM_BUS();
                DataTable dt = stkBUS.TraCuuSoTietKiem_K(sql);
                dt.Columns.Add("STT", typeof(Int32));
                dt.Columns.Add("TinhTrangChuoi", typeof(String));
                dt.Columns.Add("TenLTKChuoi", typeof(String));
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    dt.Rows[i]["STT"] = i + 1;
                    if (dt.Rows[i]["TenLoaiTietKiem"].ToString() == "0")
                        dt.Rows[i]["TenLTKChuoi"] = "Không kỳ hạn";
                    if (dt.Rows[i]["TenLoaiTietKiem"].ToString() == "3")
                        dt.Rows[i]["TenLTKChuoi"] = "3 tháng";
                    if (dt.Rows[i]["TenLoaiTietKiem"].ToString() == "6")
                        dt.Rows[i]["TenLTKChuoi"] = "6 tháng";
                    if (dt.Rows[i]["TinhTrang"].ToString() == "0")
                        dt.Rows[i]["TinhTrangChuoi"] = "Đóng";
                    else
                        dt.Rows[i]["TinhTrangChuoi"] = "Mở";

                }
                K_dgvDSSoTietKiem.DataSource = dt;
            }
            else
                MessageBoxEx.Show(err, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void K_dgvDSSoTietKiem_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                K_txtMaSo_Info.Text = K_dgvDSSoTietKiem.CurrentRow.Cells["MaSo"].Value.ToString();
                K_txtHoTenKH_Info.Text = K_dgvDSSoTietKiem.CurrentRow.Cells["HoTen"].Value.ToString();
                if (K_dgvDSSoTietKiem.CurrentRow.Cells["GioiTinh"].Value.ToString() == "0")
                    K_sbtnGioiTinh_Info.Value = true;
                else
                    K_sbtnGioiTinh_Info.Value = false;
                K_txtDiaChi_Info.Text = K_dgvDSSoTietKiem.CurrentRow.Cells["DiaChi"].Value.ToString();
                K_txtDienThoai_Info.Text = K_dgvDSSoTietKiem.CurrentRow.Cells["DienThoai"].Value.ToString();
                K_txtCMND_Info.Text = K_dgvDSSoTietKiem.CurrentRow.Cells["CMND"].Value.ToString();
                K_cbLoaiTietKiem_Info.SelectedValue = int.Parse(K_dgvDSSoTietKiem.CurrentRow.Cells["MLTK"].Value.ToString());
                K_txtSoTietGui_Info.Text = K_dgvDSSoTietKiem.CurrentRow.Cells["SoTienGui"].Value.ToString();
                DateTime ngayMo = DateTime.Parse(K_dgvDSSoTietKiem.CurrentRow.Cells["NgayMoSo"].Value.ToString());
                K_txtNgayMoSo_Info.Text = ngayMo.ToShortDateString();
                DateTime ngayDong = DateTime.Parse(K_dgvDSSoTietKiem.CurrentRow.Cells["NgayHetHan"].Value.ToString());
                K_txtNgayHetHan_Info.Text = ngayDong.ToShortDateString();
            }
            catch
            { }
        }

        private void K_btnCapNhat_Click(object sender, EventArgs e)
        {
            string err = "";
            if (K_txtHoTenKH_Info.Text == "")
                err += "Bạn chưa điền họ tên !";
            if (K_txtDiaChi_Info.Text == "")
                err += "\nBạn chưa điền địa chỉ !";
            if (K_txtDienThoai_Info.Text == "")
                err += "\nBạn chưa điền số điện thoại !";
            if (K_txtCMND_Info.Text == "")
                err += "\nBạn chưa điền số chứng minh nhân dân !";
            if (K_txtSoTietGui_Info.Text == "")
                err += "\nBạn chưa điền số tiền gửi !";
            if (err == "")
            {
                KT_SOTIETKIEM_DTO stkDTO = new KT_SOTIETKIEM_DTO();
                KT_SOTIETKIEM_BUS stkBUS = new KT_SOTIETKIEM_BUS();
                stkDTO.MS = int.Parse(K_txtMaSo_Info.Text);
                stkDTO.TenKhachHang = K_txtHoTenKH_Info.Text;
                if (K_sbtnGioiTinh_Info.Value)
                    stkDTO.GioiTinh = 0;
                else
                    stkDTO.GioiTinh = 1;
                stkDTO.DiaChi = K_txtDiaChi_Info.Text;
                stkDTO.DienThoai = K_txtDienThoai_Info.Text;
                stkDTO.CMND = K_txtCMND_Info.Text;
                stkDTO.MLTK = int.Parse(K_cbLoaiTietKiem_Info.SelectedValue.ToString());
                stkDTO.SoTienHienCo = float.Parse(K_txtSoTietGui_Info.Text);
                try
                {
                    stkDTO.NgayHetHan = DateTime.Parse(K_txtNgayHetHan_Info.Text);
                }
                catch { }
                stkDTO.LaiSuat = stkBUS.LayLaiSuat(stkDTO.MLTK);
                string tmp = stkBUS.CapNhatSoTietKiem(stkDTO);

                if (tmp == "")
                {
                    MessageBoxEx.Show("Cập nhật sổ tiết kiệm thành công !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBoxEx.Show(tmp, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBoxEx.EnableGlass = false;
                MessageBoxEx.MessageBoxTextColor = Color.White;
                MessageBoxEx.Show(err, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }
        }


        //----------------------------------------------------------//





        //--------------------------Long ---------------------------//
        #region FORM LOAD
        private void T_LayDanhSachLoaiTietKiem()
        {
            DataTable dt = new DataTable();
            T_LOAITIETKIEM_BUS ltk = new T_LOAITIETKIEM_BUS();
            dt = ltk.LayDanhSachLoaiTietKiem();
            dt.Columns.Add("TenChu", typeof(string));
            dt.Rows[0]["TenChu"] = "không kỳ hạn";
            for (int i = 1; i < dt.Rows.Count; i++)
            {
                dt.Rows[i]["TenChu"] = dt.Rows[i]["TenLoaiTietKiem"].ToString() + " tháng";
            }
            //FRM TRA CUU
            T_cmbTraCuuLoaiTietKiem.DataSource = dt;
            T_cmbTraCuuLoaiTietKiem.ValueMember = "MLTK";
            T_cmbTraCuuLoaiTietKiem.DisplayMember = "TenChu";
            T_dtpTraCuuNgay1.Value = DateTime.Now;
            T_dtpTraCuuNgay2.Value = DateTime.Now;
            //FRM BAO CAO
            T_cmbBaoCaoLoaiTietKiem.DataSource = dt;
            T_cmbBaoCaoLoaiTietKiem.ValueMember = "MLTK";
            T_cmbBaoCaoLoaiTietKiem.DisplayMember = "TenChu";
            T_dptBaoCaoNgay.Value = DateTime.Now;
        }

        private void T_LayDanhSachThang()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Thang", typeof(int));
            DataRow dr;
            for (int index = 0; index < 12; index++)
            {
                object[] rowArray = new object[1];
                rowArray[0] = index + 1;
                dr = dt.NewRow();
                dr.ItemArray = rowArray;
                dt.Rows.Add(dr);
            }
            T_cmbBaoCaoThang.DataSource = dt;
            T_cmbBaoCaoThang.DisplayMember = "Thang";
            T_cmbBaoCaoThang.ValueMember = "Thang";
        }
        #endregion

        //tab TraCuu
        private void T_ChuanBi()
        {
            T_txtTraCuuMaSo.Enabled = false;
            T_txtTraCuuTenKhachHang.Enabled = false;
            T_cmbTraCuuLoaiTietKiem.Enabled = false;
            T_dtpTraCuuNgay1.Enabled = false;
            T_dtpTraCuuNgay2.Enabled = false;
            T_rdbTraCuuGuiTien.Checked = true;

            T_dptBaoCaoNgay.Enabled = false;
            T_cmbBaoCaoLoaiTietKiem.Enabled = false;
            T_cmbBaoCaoThang.Enabled = false;
            T_txtBaoCaoNam.Enabled = false;
        }
        //Các hàm xử lý
        private void T_btnTraCuu_Click(object sender, EventArgs e)
        {
            T_dgvTraCuu.Columns.Clear();
            string chuoiloi = "";
            bool Hop_Le = true;
            string sql = "Select stk.MS, ltk.TenLoaiTietKiem, stk.TenKhachHang, stk.SoTienHienCo ";
            string sqlfrm = "From SOTIETKIEM stk, LOAITIETKIEM ltk ";
            string sqlwhere = "Where stk.MLTK=ltk.MLTK ";

            if (T_ckbTraCuuMaSo.Checked == true)
            {
                if (T_txtTraCuuMaSo.Text == "")
                {
                    Hop_Le = false;
                    chuoiloi += " Bạn phải nhập mã số\n";
                }
                else
                {
                    int maso = int.Parse(T_txtTraCuuMaSo.Text);
                    sqlwhere += " and stk.MS=" + maso.ToString();
                }
            }

            if (T_ckbTraCuuLoaiTietKiem.Checked == true)
            {
                int mltk = int.Parse(T_cmbBaoCaoLoaiTietKiem.SelectedIndex.ToString()) + 1;
                sqlwhere += " and ltk.MLTK=" + mltk.ToString();
            }

            if (T_ckbTraCuuTenKhachHang.Checked == true)
            {
                if (T_txtTraCuuTenKhachHang.Text == "")
                {
                    Hop_Le = false;
                    chuoiloi += " Bạn phải nhập tên khách hàng\n";
                }
                else
                {
                    string ten = T_txtTraCuuTenKhachHang.Text;
                    sqlwhere += " and stk.TenKhachHang like '%" + ten + "%'";
                }
            }
            if (T_ckbTraCuuNgay.Checked == true)
            {
                DateTime ngay1 = DateTime.Parse(T_dtpTraCuuNgay1.Value.ToShortDateString());
                DateTime ngay2 = DateTime.Parse(T_dtpTraCuuNgay2.Value.ToShortDateString());
                if (ngay1 > ngay2)
                {
                    Hop_Le = false;
                    chuoiloi += " Ngày tra cứu không hợp lệ";
                }
                else
                {
                    string sqlgui = String.Format(CultureInfo.InvariantCulture.DateTimeFormat, " and pgt.NgayGui >= #{0}# and pgt.NgayGui <= #{1}#", ngay1, ngay2);
                    string sqlrut = String.Format(CultureInfo.InvariantCulture.DateTimeFormat, " and prt.NgayRut >= #{0}# and prt.NgayRut <= #{1}#", ngay1, ngay2);
                    if (T_rdbTraCuuGuiTien.Checked == true)
                    {
                        sqlfrm += ",PHIEUGUITIEN pgt ";
                        sqlwhere += " and stk.MS=pgt.MS" + sqlgui;
                    }
                    else if (T_rdbTraCuuRutTien.Checked == true)
                    {
                        sqlfrm += ",PHIEURUTTIEN prt ";
                        sqlwhere += " and stk.MS=prt.MS" + sqlrut;
                    }
                }
            }
            if (Hop_Le == false)
            {
                MessageBoxEx.EnableGlass = false;
                MessageBoxEx.MessageBoxTextColor = Color.White;
                MessageBoxEx.Show(chuoiloi, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                sql += sqlfrm + sqlwhere;
                KT_SOTIETKIEM_BUS stk = new KT_SOTIETKIEM_BUS();
                DataTable dt = new DataTable();
                dt = stk.TraCuu(sql);
                if (dt.Rows.Count > 0)
                {
                    dt.Columns.Add("TenChu", typeof(string));
                    dt.Columns.Add("STT", typeof(int));
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        if (int.Parse(dt.Rows[i]["TenLoaiTietKiem"].ToString()) == 0)
                        {
                            dt.Rows[i]["TenChu"] = "Không kỳ hạn";
                        }
                        else
                        {
                            dt.Rows[i]["TenChu"] = dt.Rows[i]["TenLoaiTietKiem"].ToString() + " tháng";
                        }
                        dt.Rows[i]["STT"] = i + 1;
                    }

                    T_dgvTraCuu.DataSource = dt;
                    T_dgvTraCuu.Columns["STT"].Visible = false;
                    //dinh dang luoi
                    T_dgvTraCuu.Columns[0].HeaderText = "STT";
                    T_dgvTraCuu.Columns[0].DataPropertyName = "STT";
                    T_dgvTraCuu.Columns[1].HeaderText = "Mã sổ";
                    T_dgvTraCuu.Columns[1].DataPropertyName = "MS";
                    T_dgvTraCuu.Columns[2].HeaderText = "Loại Tiết Kiệm";
                    T_dgvTraCuu.Columns[2].DataPropertyName = "TenChu";
                    T_dgvTraCuu.Columns[3].HeaderText = "Khách hàng";
                    T_dgvTraCuu.Columns[3].DataPropertyName = "TenKhachHang";
                    T_dgvTraCuu.Columns[4].HeaderText = "Số tiền hiện có";
                    T_dgvTraCuu.Columns[4].DataPropertyName = "SoTienHienCo";
                }
                else
                {
                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Không tìm thấy dữ liệu cần tìm.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void T_ckbTraCuuMaSo_CheckedChanged(object sender, EventArgs e)
        {
            if (T_txtTraCuuMaSo.Enabled == true)
            {
                T_txtTraCuuMaSo.Text = "";
                T_txtTraCuuMaSo.Enabled = false;
            }
            else
                T_txtTraCuuMaSo.Enabled = true;
            T_dgvTraCuu.DataSource = "";
        }

        private void T_ckbTraCuuLoaiTietKiem_CheckedChanged(object sender, EventArgs e)
        {
            if (T_cmbTraCuuLoaiTietKiem.Enabled == true)
                T_cmbTraCuuLoaiTietKiem.Enabled = false;
            else
                T_cmbTraCuuLoaiTietKiem.Enabled = true;
            T_dgvTraCuu.DataSource = "";
        }

        private void T_ckbTraCuuTenKhachHang_CheckedChanged(object sender, EventArgs e)
        {
            if (T_txtTraCuuTenKhachHang.Enabled == true)
            {
                T_txtTraCuuTenKhachHang.Text = "";
                T_txtTraCuuTenKhachHang.Enabled = false;
            }
            else
                T_txtTraCuuTenKhachHang.Enabled = true;
            T_dgvTraCuu.DataSource = "";
        }

        private void T_ckbTraCuuNgay_CheckedChanged(object sender, EventArgs e)
        {
            if (T_dtpTraCuuNgay1.Enabled == true && T_dtpTraCuuNgay2.Enabled == true)
            {
                T_dtpTraCuuNgay1.Text = "";
                T_dtpTraCuuNgay2.Text = "";
                T_dtpTraCuuNgay1.Enabled = false;
                T_dtpTraCuuNgay2.Enabled = false;
            }
            else
            {
                T_dtpTraCuuNgay1.Text = DateTime.Now.ToString();
                T_dtpTraCuuNgay2.Text = DateTime.Now.ToString();
                T_dtpTraCuuNgay1.Enabled = true;
                T_dtpTraCuuNgay2.Enabled = true;
            }
            T_dgvTraCuu.DataSource = "";
        }

        private void T_txtTraCuuTenKhachHang_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsLetter(e.KeyChar))
            {
                e.Handled = true;
            }
            else
                e.Handled = false;

            if (e.KeyChar == (int)Keys.Back)
                e.Handled = false;
        }

        private void T_txtTraCuuMaSo_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsNumber(e.KeyChar))
            {
                e.Handled = true;
            }
            else
                e.Handled = false;

            if (e.KeyChar == (int)Keys.Back)
                e.Handled = false;
        }

        //Tab BaoCao           

        #region BAO CAO NGAY
        private void BaoCaoNgay()
        {
            DateTime ngay = T_dptBaoCaoNgay.Value;
            if (ngay <= DateTime.Now)
            {
                DataTable dt = new DataTable();
                DataTable dt1 = new DataTable();
                KT_SOTIETKIEM_BUS stk = new KT_SOTIETKIEM_BUS();
                //lay du lieu tu database
                dt = stk.BaoCaoLayTongThuTrongNgay(ngay);
                dt.PrimaryKey = new DataColumn[] { dt.Columns["TenLoaiTietKiem"] };
                dt1 = stk.BaoCaoLayTongChiTrongNgay(ngay);
                dt1.PrimaryKey = new DataColumn[] { dt1.Columns["TenLoaiTietKiem"] };
                dt.Merge(dt1);
                if (dt.Rows.Count > 0)
                {
                    dt.Columns.Add("Chenh_Lech", typeof(double));
                    dt.Columns.Add("STT", typeof(int));
                    dt.Columns.Add("TenChu", typeof(string));
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        if (int.Parse(dt.Rows[i]["TenLoaiTietKiem"].ToString()) == 0)
                        {
                            dt.Rows[i]["TenChu"] = "Không kỳ hạn";
                        }
                        else
                        {
                            dt.Rows[i]["TenChu"] = dt.Rows[i]["TenLoaiTietKiem"].ToString() + " tháng";
                        }

                        dt.Rows[i]["STT"] = i + 1;
                        if (dt.Rows[i]["Tong_Thu"].ToString() == "")
                            dt.Rows[i]["Tong_Thu"] = 0;
                        if (dt.Rows[i]["Tong_Chi"].ToString() == "")
                            dt.Rows[i]["Tong_Chi"] = 0;
                        dt.Rows[i]["Chenh_Lech"] = Math.Abs(double.Parse(dt.Rows[i]["Tong_Thu"].ToString()) - double.Parse(dt.Rows[i]["Tong_Chi"].ToString()));
                    }
                    T_dgvBaoCao.DataSource = dt;
                    T_dgvBaoCao.Columns["TenChu"].Visible = false;
                    //dinh dang luoi
                    T_dgvBaoCao.Columns[0].HeaderText = "STT";
                    T_dgvBaoCao.Columns[0].DataPropertyName = "STT";
                    T_dgvBaoCao.Columns[1].HeaderText = "Loại Tiết Kiệm";
                    T_dgvBaoCao.Columns[1].DataPropertyName = "TenChu";
                    T_dgvBaoCao.Columns[2].HeaderText = "Tổng thu";
                    T_dgvBaoCao.Columns[2].DataPropertyName = "Tong_Thu";
                    T_dgvBaoCao.Columns[3].HeaderText = "Tổng chi";
                    T_dgvBaoCao.Columns[3].DataPropertyName = "Tong_Chi";
                    T_dgvBaoCao.Columns[4].HeaderText = "Chênh lệch";
                    T_dgvBaoCao.Columns[4].DataPropertyName = "Chenh_Lech";
                }
                else
                {
                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Không thực hiện giao dịch vào ngày này!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else
            {
                MessageBoxEx.EnableGlass = false;
                MessageBoxEx.MessageBoxTextColor = Color.White;
                MessageBoxEx.Show("Ngày báo cáo không hợp lý.\n Vui lòng nhập lại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        #endregion

        #region BAO CAO THANG
        private void BaoCaoThang()
        {
            bool Hop_le = true;
            //lay thang
            int thang = int.Parse(T_cmbBaoCaoThang.Text);
            //lay ma loai tiet kiem
            DataTable bangLTK = new DataTable();
            T_LOAITIETKIEM_BUS ltk = new T_LOAITIETKIEM_BUS();
            bangLTK = ltk.LayDanhSachLoaiTietKiem();
            int chiso = T_cmbBaoCaoLoaiTietKiem.SelectedIndex;
            int mltk = int.Parse(bangLTK.Rows[chiso]["MLTK"].ToString());

            DataTable Mo = new DataTable();
            DataTable Dong = new DataTable();
            KT_SOTIETKIEM_BUS stk = new KT_SOTIETKIEM_BUS();

            //lay so luong ngay trong thang, nam hien tai
            int nam = int.Parse(T_txtBaoCaoNam.Text);
            if (nam > DateTime.Now.Year)
            {
                Hop_le = false;
            }

            if (Hop_le == true)
            {
                int soLuongNgayTrongThang = DateTime.DaysInMonth(nam, thang);

                //lay du lieu cho bang so luong so mo theo ngay
                Mo = stk.BaoCaoMoSoThang(mltk, thang, nam);
                Mo.PrimaryKey = new DataColumn[] { Mo.Columns["Ngay"] };

                //lay du lieu cho bang So luong So Dong theo Ngay
                Dong = stk.BaoCaoDongSoThang(mltk, thang, nam);
                Dong.PrimaryKey = new DataColumn[] { Dong.Columns["Ngay"] };

                //Tao bang moi'
                DataTable bang = new DataTable();
                bang.Columns.Add("STT", typeof(int));
                bang.Columns.Add("Ngay", typeof(DateTime));
                bang.Columns.Add("So_Mo", typeof(int));
                bang.Columns.Add("So_Dong", typeof(int));
                Mo.PrimaryKey = new DataColumn[] { Mo.Columns["Ngay"] };
                for (int i = 1; i <= soLuongNgayTrongThang; i++)
                {

                    DataRow dr = bang.NewRow();
                    string ngay = i.ToString() + "/" + thang.ToString() + "/" + nam.ToString();
                    dr["STT"] = i;
                    dr["Ngay"] = DateTime.Parse(ngay);
                    dr["So_Mo"] = 0;
                    dr["So_Dong"] = 0;
                    bang.Rows.InsertAt(dr, i - 1);

                }
                bang.Merge(Mo);
                bang.Merge(Dong);
                if (bang.Rows.Count > 0)
                {
                    bang.Columns.Add("Chenh_Lech", typeof(int));
                    for (int i = 0; i < bang.Rows.Count; i++)
                    {
                        bang.Rows[i]["Chenh_Lech"] = Math.Abs(int.Parse(bang.Rows[i]["So_Mo"].ToString()) - int.Parse(bang.Rows[i]["So_Dong"].ToString()));
                    }
                    T_dgvBaoCao.DataSource = bang;

                    //DInh dang luoi
                    T_dgvBaoCao.Columns[0].HeaderText = "STT";
                    T_dgvBaoCao.Columns[0].DataPropertyName = "STT";
                    T_dgvBaoCao.Columns[1].HeaderText = "Ngày";
                    T_dgvBaoCao.Columns[1].DataPropertyName = "Ngay";
                    T_dgvBaoCao.Columns[2].HeaderText = "Số sổ mở";
                    T_dgvBaoCao.Columns[2].DataPropertyName = "So_Mo";
                    T_dgvBaoCao.Columns[3].HeaderText = "Số sổ đóng";
                    T_dgvBaoCao.Columns[3].DataPropertyName = "So_Dong";
                    T_dgvBaoCao.Columns[4].HeaderText = "Chênh lệch";
                    T_dgvBaoCao.Columns[4].DataPropertyName = "Chenh_Lech";
                }
            }
            else
            {
                MessageBoxEx.EnableGlass = false;
                MessageBoxEx.MessageBoxTextColor = Color.White;
                MessageBoxEx.Show("Bạn phải nhập lại năm tra cứu!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        #endregion

        private void T_btnBaoCaoLapBaoCao_Click(object sender, EventArgs e)
        {
            T_dgvBaoCao.Columns.Clear();
            if (T_rdbBaoCaoNgay.Checked == true)
                BaoCaoNgay();
            if (T_rdbBaoCaoThang.Checked == true)
                BaoCaoThang();
        }

        private void T_rdbBaoCaoNgay_CheckedChanged(object sender, EventArgs e)
        {
            T_dptBaoCaoNgay.Text = DateTime.Now.ToString();
            if (T_dptBaoCaoNgay.Enabled == true)
                T_dptBaoCaoNgay.Enabled = false;
            else
                T_dptBaoCaoNgay.Enabled = true;
            T_dgvBaoCao.DataSource = "";
        }

        private void T_rdbBaoCaoThang_CheckedChanged(object sender, EventArgs e)
        {
            T_txtBaoCaoNam.Text = "2011";
            if (T_cmbBaoCaoLoaiTietKiem.Enabled == false && T_cmbBaoCaoThang.Enabled == false && T_txtBaoCaoNam.Enabled == false)
            {
                T_cmbBaoCaoLoaiTietKiem.Enabled = true;
                T_cmbBaoCaoThang.Enabled = true;
                T_txtBaoCaoNam.Enabled = true;
            }
            else
            {
                T_cmbBaoCaoLoaiTietKiem.Enabled = false;
                T_cmbBaoCaoThang.Enabled = false;
                T_txtBaoCaoNam.Enabled = false;
            }
            T_dgvBaoCao.DataSource = "";
        }

        private void T_txtBaoCaoNam_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsNumber(e.KeyChar))
            {
                e.Handled = true;
            }
            else
                e.Handled = false;

            if (e.KeyChar == (int)Keys.Back)
                e.Handled = false;
        }

        //XUAT RA EXCEL
        private void T_btnXuatFileBaoCao_Click(object sender, EventArgs e)
        {
            if (T_dgvBaoCao.ColumnCount > 0)
            {
                ReportExcel rp = new ReportExcel();
                if(T_rdbBaoCaoNgay.Checked)
                    T_dgvBaoCao.Columns.Remove("TenChu");
                rp.Export2Excel(T_dgvBaoCao);
            }
            else
            {
                MessageBoxEx.EnableGlass = false;
                MessageBoxEx.MessageBoxTextColor = Color.White;
                MessageBoxEx.Show("Không có dữ liệu để xuất!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }













        //----------------------------------------------------------//





        //-------------------------- Phung ---------------------------//
        #region Thay Doi Qui Dinh

        private void P_LoadDanhSachLoaiTietKiem()
        {
            DataTable dt = new DataTable();
            P_QUIDINHSOTIETKIEM_BUS pltk = new P_QUIDINHSOTIETKIEM_BUS();
            dt = pltk.P_LoadDanhSachLoaiTietKiem();
            P_cbbLoaiKyHan.DataSource = dt;
            P_cbbLoaiKyHan.DisplayMember = "TenLoaiTietKiem";
            P_cbbLoaiKyHan.ValueMember = "MLTK";
        }

        private void P_LoadQuiDinh()
        {
            DataTable dt = new DataTable();
            P_QUIDINHSOTIETKIEM_BUS qd = new P_QUIDINHSOTIETKIEM_BUS();
            dt = qd.P_LoadQuiDinh();
            P_txtSoLuongLoaiKyHan.Text = dt.Rows[0]["SoLuongLoaiKyHan"].ToString();
            P_txtThoiGianGuiToiThieu.Text = dt.Rows[0]["ThoiGianGuiToiThieu"].ToString();
            P_txtTienGuiToiThieu.Text = dt.Rows[0]["TienGuiToiThieu"].ToString();
        }

        private void P_ThemLoaiTietKiemMoi()
        {
            P_QUIDINHSOTIETKIEM_BUS pBUS = new P_QUIDINHSOTIETKIEM_BUS();
            P_QUIDINHSOTIETKIEM_DTO pDTO = new P_QUIDINHSOTIETKIEM_DTO();
            pDTO.PTenLoaiTietKiem = int.Parse(P_txtThemTenLoaiKyHan.Text);
            pDTO.PLaiSuat = double.Parse(P_txtThemLaiSuat.Text);
            pBUS.P_ThemLoaiTietKiemMoi(pDTO);
        }
        private void P_btnThem_Click(object sender, EventArgs e)
        {
            DataTable quidinh = new DataTable();
            P_QUIDINHSOTIETKIEM_BUS qd = new P_QUIDINHSOTIETKIEM_BUS();
            quidinh = qd.P_LoadQuiDinh();
            int qd_soLuong = int.Parse (quidinh.Rows[0]["SoLuongLoaiKyHan"].ToString());
            DataTable loaitietkiem = qd.P_SoLuongLTK();
            int ltk_soLuong = loaitietkiem.Rows.Count;
            if (ltk_soLuong < qd_soLuong)
            {
                try
                {
                    P_ThemLoaiTietKiemMoi();
                    MessageBoxEx.EnableGlass = false;
                    MessageBoxEx.MessageBoxTextColor = Color.White;
                    MessageBoxEx.Show("Thêm thành công loại tiết kiệm mới !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    P_LoadDanhSachLoaiTietKiem();
                }
                catch
                {
                    MessageBoxEx.Show("Chưa điền đủ thông tin !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
                MessageBoxEx.Show("Số lượng loại tiết kiệm không hợp lệ !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        private void P_btnCapNhatThayDoi_Click(object sender, EventArgs e)
        {
            try
            {
                P_QUIDINHSOTIETKIEM_BUS pcntd = new P_QUIDINHSOTIETKIEM_BUS();
                P_QUIDINHSOTIETKIEM_DTO pdto = new P_QUIDINHSOTIETKIEM_DTO(); 
                pdto.PSoLuongLoaiKyHan = int.Parse(P_txtSoLuongLoaiKyHan.Text);
                pdto.PThoiGianGuiToiThieu = int.Parse(P_txtThoiGianGuiToiThieu.Text);
                pdto.PTienGuiToiThieu = int.Parse(P_txtTienGuiToiThieu.Text);
                pcntd.P_CapNhatQuiDinh(pdto);

                P_QUIDINHSOTIETKIEM_DTO dto = new P_QUIDINHSOTIETKIEM_DTO();
                dto.PLaiSuat = double.Parse(P_txtLaiSuat.Text);
                dto.PMLTK = int.Parse(P_cbbLoaiKyHan.SelectedValue.ToString());
                pcntd.P_CapNhatLaiSuat(dto);

                MessageBoxEx.EnableGlass = false;
                MessageBoxEx.MessageBoxTextColor = Color.White;
                MessageBoxEx.Show("Cập nhật thành công !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                P_LoadDanhSachLoaiTietKiem();
                P_LoadQuiDinh();
            }
            catch
            {
                MessageBoxEx.Show("Chưa điền đủ thông tin !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void P_cbbLoaiKyHan_SelectedIndexChanged(object sender, EventArgs e)
        {
            P_QUIDINHSOTIETKIEM_BUS ls = new P_QUIDINHSOTIETKIEM_BUS();
            DataTable tb = new DataTable();
            tb = ls.P_LoadDanhSachLoaiTietKiem();
            int index = P_cbbLoaiKyHan.SelectedIndex;
            double laisuat = double.Parse(tb.Rows[index]["LaiSuat"].ToString());
            P_txtLaiSuat.Text = laisuat.ToString();
            //P_txtThemLaiSuat.Text = laisuat.ToString();
            //P_txtThemTenLoaiKyHan.Text = tb.Rows[index]["TenLoaiTietKiem"].ToString();
        }
        #endregion

        #region Kiem Tra du lieu nhap vao la so hay la so thap phan
        private void P_txtTienGuiToiThieu_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((Char.IsNumber(e.KeyChar)) == false)
            {
                e.Handled = true;
            }
            if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
        }

        private void P_txtThoiGianGuiToiThieu_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((Char.IsNumber(e.KeyChar)) == false)
            {
                e.Handled = true;
            }
            if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
        }

        private void P_txtLaiSuat_KeyPress(object sender, KeyPressEventArgs e)
        {
            string decimalString = Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalSeparator;
            char decimalChar = Convert.ToChar(decimalString);

            if (Char.IsDigit(e.KeyChar) || Char.IsControl(e.KeyChar)) { }
            else if (e.KeyChar == decimalChar && P_txtThemLaiSuat.Text.IndexOf(decimalString) == -1) { }
            else
            {
                e.Handled = true;
            }
        }

        private void P_txtSoLuongLoaiKyHan_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((Char.IsNumber(e.KeyChar)) == false)
            {
                e.Handled = true;
            }
            if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
        }

        private void P_txtThemTenLoaiKyHan_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((Char.IsNumber(e.KeyChar)) == false)
            {
                e.Handled = true;
            }
            if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
        }

        private void P_txtThemLaiSuat_KeyPress(object sender, KeyPressEventArgs e)
        {
            string decimalString = Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalSeparator;
            char decimalChar = Convert.ToChar(decimalString);

            if (Char.IsDigit(e.KeyChar) || Char.IsControl(e.KeyChar)) { }
            else if (e.KeyChar == decimalChar && P_txtThemLaiSuat.Text.IndexOf(decimalString) == -1) { }
            else
            {
                e.Handled = true;
            }
        }

        #endregion


        #region su kien chuyen tab

        private void P_btnSoTietKiem_Click(object sender, EventArgs e)
        {
            K_rbtSoTietKiem.Checked = true;
        }

        private void P_btnPhieuGuiTien_Click(object sender, EventArgs e)
        {
            A_rbtPhieuGuiTien.Checked = true;
        }

        private void P_btnPhieuRutTien_Click(object sender, EventArgs e)
        {
            A_rbtPhieuRutTien.Checked = true;
        }

        private void P_btnTraCuu_Click(object sender, EventArgs e)
        {
            T_rbtTraCuu.Checked = true;
        }

        private void P_btnBaoCao_Click(object sender, EventArgs e)
        {
            T_rbtBaoCao.Checked = true;
        }

        private void P_btnThayDoiQuiDinh_Click(object sender, EventArgs e)
        {
            P_rbtThayDoiQuiDinh.Checked = true;
        }


        #endregion


        #region Tai khoan dang nhat va xuat
        private void P_btnDangNhap_Click(object sender, EventArgs e)
        {
            try
            {
                P_TAIKHOAN_BUS bus = new P_TAIKHOAN_BUS();
                DataTable dt;
                string tendn = P_txtTenDangNhap.Text;
                string matkhau = P_txtMatKhau.Text;
                dt = bus.P_DangNhap(tendn, matkhau);
                P_lbThongTinTaiKhoan.Text = dt.Rows[0]["TenDangNhap"].ToString();
                int quyenHan = int.Parse(dt.Rows[0]["MLQH"].ToString());

                P_expnDangNhap.Expanded = false;
                P_expnDangNhap.Enabled = false;
                P_expnThongTinTaiKhoan.Expanded = true;
                P_expnThongTinTaiKhoan.Enabled = true;
                P_expnDanhMuc.Expanded = true;
                P_expnDanhMuc.Enabled = true;
                P_txtTenDangNhap.Text = "";
                P_txtMatKhau.Text = "";
                //A_rbtHuongDan.Enabled = true;
                // Phan quyen
                if (quyenHan == 1)
                {
                    K_rpnThayDoiQuiDinh.Enabled = true;
                    P_rbtThayDoiQuiDinh.Checked = true;
                    P_btnThayDoiQuiDinh.Enabled = true;
                    P_lbChucVu.Text = "Giám Đốc";
                }
                else if (quyenHan == 2)
                {
                    K_rpnBaoCao.Enabled = true;
                    T_rbtBaoCao.Checked = true;
                    P_btnBaoCao.Enabled = true;
                    P_lbChucVu.Text = "Kế Toán";
                }
                else
                {
                    K_rpnSoTietKiem.Enabled = true;
                    K_rbtSoTietKiem.Checked = true;
                    K_rpnPhieuGuiTien.Enabled = true;
                    K_rpnPhieuRutTien.Enabled = true;
                    K_rpnTraCuu.Enabled = true;
                    P_btnSoTietKiem.Enabled = true;
                    P_btnPhieuGuiTien.Enabled = true;
                    P_btnPhieuRutTien.Enabled = true;
                    P_btnTraCuu.Enabled = true;
                    P_lbChucVu.Text = "Nhân Viên";
                }

            }
            catch (Exception ex)
            {
                MessageBoxEx.EnableGlass = false;
                MessageBoxEx.MessageBoxTextColor = Color.White;
                MessageBoxEx.Show("Thông tin đăng nhập không chính xác !\nVui lòng nhập lại !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                P_expnDangNhap.Visible = true;
            }

        }

        private void P_btnDangXuat_Click(object sender, EventArgs e)
        {
            P_expnDangNhap.Expanded = true;
            P_expnDangNhap.Enabled = true;
            P_expnThongTinTaiKhoan.Expanded = false;
            P_expnThongTinTaiKhoan.Enabled = false;
            P_lbThongTinTaiKhoan.Text = "";
            P_expnDanhMuc.Expanded = false;
            P_expnDanhMuc.Enabled = false;

            K_rpnSoTietKiem.Enabled = false;
            K_rpnPhieuGuiTien.Enabled = false;
            K_rpnPhieuRutTien.Enabled = false;
            K_rpnTraCuu.Enabled = false;
            K_rpnBaoCao.Enabled = false;
            K_rpnThayDoiQuiDinh.Enabled = false;

            P_btnSoTietKiem.Enabled = false;
            P_btnPhieuGuiTien.Enabled = false;
            P_btnPhieuRutTien.Enabled = false;
            P_btnTraCuu.Enabled = false;
            P_btnBaoCao.Enabled = false;
            P_btnThayDoiQuiDinh.Enabled = false;

            //A_rbtHuongDan.Enabled = false;
        }


        #endregion

        

     

       
        //----------------------------------------------------------//

        #endregion

    }
}